﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using _1.Presentacion.Principal;
using _1.Presentacion.Utilidades;
using _2.Logica.Inventario;


namespace _1.Presentacion.Modulo_Inventario
{
    public partial class RazonAjuste : Päntalla_Base
    {
        public RazonAjuste()
        {
            InitializeComponent();
        }


        private void RazonAjuste_Load(object sender, EventArgs e)
        {
            txtPKRazonAjuste.Text = "0";
            Validaciones.CargarUsuarioLogueado(lbl_Usuario, lbl_Fecha);
            CargaGridRazonAjuste();

        }

        #region Carga Datos
        public void CargaGridRazonAjuste()
        {
            try
            {
                var logica = new RazonAjusteL();

                List<_4.Modelado.Inventario.RazonAjuste> listaRazonAjuste = logica.RazonAjusteConsultar();
                //Recorre la lista de Razones de Ajustes para asignar a cada celda del Datagrid
                //Los valores devueltos por la consulta
                dgvRazonAjuste.Rows.Clear();
                for (int i = 0; i < listaRazonAjuste.Count; i++)
                {
                    dgvRazonAjuste.Rows.Add();
                    dgvRazonAjuste.Rows[i].Cells[0].Value = listaRazonAjuste[i].iPKRazonAjuste;
                    dgvRazonAjuste.Rows[i].Cells[1].Value = listaRazonAjuste[i].sRazonAjusteDescripcion;

                }

            }
            catch (Exception exc)
            {

                MessageBox.Show("Eror al cargar la lista de Áreas " + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }

        #endregion
       

      

        #region Botones
        private void btnNuevo_Click(object sender, EventArgs e)
        {
            this.P_Limpiar();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
           
            try
            {

                int cantErrores = 0;

                Validaciones.Validar(this, errorProvider1, ref cantErrores);

                if (cantErrores == 0)
                {
                    #region Guardar Razon Ajuste

                    var obj = new _4.Modelado.Inventario.RazonAjuste();
                    obj.sRazonAjusteDescripcion = txtRazonDescripcion.Text;
                    obj.iPKRazonAjuste = Convert.ToInt32(txtPKRazonAjuste.Text);
                    var logica = new RazonAjusteL();
                    logica.RazonAjusteGuardar(obj);
                    CargaGridRazonAjuste();
                    MessageBox.Show("El registro ha sido guardado", "Transacción", MessageBoxButtons.OK);
                    P_Limpiar();

                    #endregion

                }
            }
            catch (Exception exc)
            {
                MessageBox.Show("Se produjo un error al guardar los datos" + exc, "Error", MessageBoxButtons.OK);
            }

        }

        
        private void btnEliminar_Click(object sender, EventArgs e)
        {

            try
            {
                if (dgvRazonAjuste.RowCount > 0)
                {
                    int indiceFila = dgvRazonAjuste.SelectedCells[0].RowIndex;
                    string sDescripcion = dgvRazonAjuste[1, indiceFila].Value.ToString();

                    #region Elimina Razon

                    DialogResult r = MessageBox.Show("Desea eliminar la razón: " + sDescripcion, "Validaciones",
                                                     MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                    if (r == DialogResult.OK)
                    {
                        var obj = new _4.Modelado.Inventario.RazonAjuste();
                        obj.iPKRazonAjuste = Convert.ToInt32(dgvRazonAjuste.Rows[indiceFila].Cells[0].Value);

                        var logica = new RazonAjusteL();
                        logica.RazonAjusteEliminar(obj);                        
                        CargaGridRazonAjuste();
                        MessageBox.Show("El registro ha sido eliminado", "Transacción", MessageBoxButtons.OK);
                        P_Limpiar();


                    }

                    #endregion
                }
            }
            catch (Exception exc)
            {

                if (exc.Message.Contains("The DELETE statement conflicted with the REFERENCE constraint"))
                {
                    MessageBox.Show("La razón tiene datos asociados, asegúrese de que no tenga datos asociados", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show("No se pudo eliminar el registro " + exc, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

        }

        private void btnHome_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }
       
        #endregion


        private void P_Limpiar()
        {
            txtRazonDescripcion.Clear();
            txtPKRazonAjuste.Text = "0";
        }

        private void dgvRazonAjuste_DoubleClick(object sender, EventArgs e)
        {
            int indicefila = dgvRazonAjuste.SelectedCells[0].RowIndex;
            txtPKRazonAjuste.Text = dgvRazonAjuste.Rows[indicefila].Cells[0].Value.ToString();
            txtRazonDescripcion.Text = dgvRazonAjuste.Rows[indicefila].Cells[1].Value.ToString();
        }

        private void txtRazonDescripcion_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnGuardar_Click(sender, e);
                  
            }
        }

      
    }
}
